import http from 'wechat-http'

// 基准地址
http.baseURL = 'https://live-api.itheima.net'

http.intercept.request = function (options) {
  const defaultHeader = {
    Authorization: `Bearer ${getApp().token}`,
  }
  options.header = Object.assign({}, defaultHeader, options.header)
  return options
}

// 响应拦截器，解构数据data
http.intercept.response = async function (response) {
  // 接口返回401 >> token失效了 >> 用refreshToken换去accessToken
  if (response.data.code === 401) {
    if (response.config.url.includes('refreshToken')) {
      // 重定向到登录页面
      const pageStack = getCurrentPages()
      const currentPage = pageStack.pop()
      const redirectURL = currentPage.route
      // 跳由跳转（登录页面）
      return wx.redirectTo({
        url: '/pages/login/index?type=tab&redirectURL=/' + redirectURL,
      })
    }
    // 如果refreshToken这个接口401了 >>
    // 重定向到login
    // 利用refshTOken换token
    // console.log(app.refreshToken)
    const app = getApp()
    // debugger
    const res = await http({
      url: '/refreshToken',
      header: {
        Authorization: 'Bearer ' + app.refreshToken,
      },
      method: 'post',
    })
    // 把最新的token信息存储到app实例，和本地存储中
    app.setToken('token', res.data.token)
    app.setToken('refreshToken', res.data.refreshToken)
    // 利用最新的token把上一次失效的token替换掉
    Object.assign(response.config, {
      header: {
        Authorization: 'Bearer ' + res.data.token,
      },
    })
    // 然后利用最新的token发起最新的请求
    return http(response.config)
  }
  return response.data
}

wx.http = http

export default http
